'''
pymysql 模块
    作用： 连接MYSQL数据库、数据管理操作

安装pymysql
pip install pymysql
配置国内的pip库          本地用户的目录下pip文件夹pip.ini

使用流程：
    1、创建数据库连接
    2、基于连接创建游标：游标主要发送执行SQL，接收执行结果
    3、执行SQL
    4、关闭游标、数据库连接
'''
import pymysql,paramiko, os

#查询数据
def selectData():
    db_connect = pymysql.connect(host="192.168.7.16",user="admin",password="DD.08.dd",database="test")
    # 定义游标
    db_cr = db_connect.cursor()

    #执行SQL
    test_sql = "select ip,user,password,port from my_table" # 定义SQL语句
    result = db_cr.execute(test_sql) # 执行SQL
    print(result) # 返回数据的行数

    # db_cr.fetchall() # 获取所有   #返回元组的数据类型

    # 根据查询语句的结果的所有
    data_01 = db_cr.fetchall()
    print(data_01)
    # for user, host in data_01:
    #     print("用户名: %s,主机名: %s" % (user, host))

    # db_cr.fetchmany(2) #获取前两行

    # data_04 = db_cr.fetchmany(2)
    # print(data_04)
    # data_05 = db_cr.fetchmany(0)
    # print(data_05)

    # db_cr.fetchone() #获取一行

    # data_02 = db_cr.fetchone()
    # print(data_02)
    # data_03 = db_cr.fetchone()
    # print(data_03)

    db_cr.close()
    db_connect.close()

#写操作数据
def writeData():
    db_connect = pymysql.connect(host="192.168.7.16",user="admin",password="DD.08.dd")
    db_cr = db_connect.cursor()

    test1_data = "insert into test.my_table VALUES ('192.168.7.16', 'root', '1', 22)"
    test2_data = "delete from test.my_table where ip='192.168.7.10'"
    test3_data = "update test.my_table set user='root' where ip='192.168.7.16'"
    result = db_cr.execute(test1_data)
    # 因为代码的写操作都是以事务的形式写的，所以要提交一下
    db_connect.commit()
    print(result)
    # 必须提交写操作    db_connect.commit()

def test2():
    #1 、建立ssh连接
    ssh_connect = paramiko.Transport("192.168.7.16", 22)
    ssh_connect.connect(username="root", password="1")

    #2、基于连接创建ftp客户端工具
    sftp = paramiko.SFTPClient.from_transport(ssh_connect)
    #3、上传文件
    sftp.put('D:\PythonProject\python-learn\Third_party_module\__init__.py', '/opt/__init__.py') #上传

    # file_path = (r'D:\PythonProject\python-learn\Syntax_of_function')
    # os.chmod(file_path, 0o777)
    # sftp.get("/etc/fstab",file_path )  # 下载
    #如果目的文件存在的话就会覆盖


    sftp.close()
    ssh_connect.close()


if __name__ == '__main__':
    test2()